/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package LogicaNegocio.Controlador;

import GUI.Bibliotecario.FrameBibliotecario;
import GUI.Ingreso.PanelIngresoSistema;
import GUI.Jefe.FrameJefe;
import GUI.Usuario.FrameUsuario;
import LogicaNegocio.Empleados.Bibliotecario;
import LogicaNegocio.Empleados.JefeBibliotecario;
import LogicaNegocio.Validacion.VIngresoSistema;
import MainBiblioSoft.BiblioSoft;
import javax.swing.JOptionPane;

/**
 * Esta clase en java permite el control de eventos generados
 * desde el panel ingreso al sistema.
 *
 * @author Sebaxtian
 * Archivo: ControlIngresoSistema.java
 * @version 1.0
 * Fecha: sáb jun 5 01:20:45 COT 2010
 */


public class ControlIngresoSistema implements Runnable {

    //Atributos de clase
    private PanelIngresoSistema panelIngresoSistema;
    private JefeBibliotecario jefe;
    private Bibliotecario bibliotecario;

    public ControlIngresoSistema(PanelIngresoSistema panelIngresoSistema) {
        this.panelIngresoSistema = panelIngresoSistema;
        panelIngresoSistema.progressBarIngreso.setMinimum(0);
        panelIngresoSistema.progressBarIngreso.setMaximum(100);
    }

    private void ingresar() {
        //atributos de ingreso Bibliotecario, Jefe
        String perfil = panelIngresoSistema.comboPerfil.getSelectedItem().toString();
        String login = panelIngresoSistema.textFieldLogin.getText();
        String password = new String(panelIngresoSistema.passFieldPassword.getPassword());
        int numeroCedula = -1;
        VIngresoSistema validaIngreso;
        //---
        actualizarBarraProgreso(10);
        if(panelIngresoSistema.radioEmpleado.isSelected()){
            validaIngreso = new VIngresoSistema();
            try{
                if(perfil.equals("Bibliotecario")){
                    numeroCedula = Integer.parseInt(login);
                    actualizarBarraProgreso(30);
                    validaIngreso.validarIngresoBibliotecario(numeroCedula, password);
                    actualizarBarraProgreso(70);
                    FrameBibliotecario ventanaBibliotecario = new FrameBibliotecario();
                    actualizarBarraProgreso(95);
                    BiblioSoft.ingresoSistema.dispose();
                    ventanaBibliotecario.setVisible(true);
                }
                if(perfil.equals("Jefe")){
                    numeroCedula = Integer.parseInt(login);
                    actualizarBarraProgreso(30);
                    validaIngreso.validarIngresoJefeBibliotecario(numeroCedula, password);
                    actualizarBarraProgreso(70);
                    FrameJefe ventanaJefe = new FrameJefe();
                    actualizarBarraProgreso(95);
                    BiblioSoft.ingresoSistema.dispose();
                    ventanaJefe.setVisible(true);
                }
            } catch (VIngresoSistema ex) {
                JOptionPane.showMessageDialog(panelIngresoSistema, ex.getMessage(), "Error Ingreso", JOptionPane.ERROR_MESSAGE);
                actualizarBarraProgreso(0);
                panelIngresoSistema.textFieldLogin.setText("");
                panelIngresoSistema.passFieldPassword.setText("");
                panelIngresoSistema.btnIngresar.setEnabled(true);
            }catch(NumberFormatException exc) {
                JOptionPane.showMessageDialog(panelIngresoSistema, "El campo de login debe ser el numero de cedula", "Error Login", JOptionPane.INFORMATION_MESSAGE);
                actualizarBarraProgreso(0);
                panelIngresoSistema.textFieldLogin.setText("");
                panelIngresoSistema.passFieldPassword.setText("");
                panelIngresoSistema.btnIngresar.setEnabled(true);
            }
        }else{
            actualizarBarraProgreso(30);
            FrameUsuario frameUsuario = new FrameUsuario();
            actualizarBarraProgreso(95);
            BiblioSoft.ingresoSistema.dispose();
            frameUsuario.setVisible(true);
        }
    }

    private void actualizarBarraProgreso(int progreso) {
        panelIngresoSistema.progressBarIngreso.setValue(progreso);
    }

    public void run() {
        ingresar();
    }
}
